/**
 * PanelDocentes.java
 */

 /**
 *  AdSec: Administrador de Secundarias
 *  Copyright (C) 2009 Daniela Ramírez Chaves (dannyrch@gmail.com)
 *  Copyright (C) 2009 Leonel Salazar Valverde (leo87sv@gmail.com)
 *
 *  This file is part of AdSec.
 *  AdSec is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  AdSec is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with AdSec.  If not, see <http://www.gnu.org/licenses/>.
 */

package adsec.presentacion;

import java.sql.Date;
import java.util.Calendar;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.MaskFormatter;
import adsec.entidades.Comite;
import adsec.entidades.Docente;
import adsec.negocios.AdministradorSeguridad;
import adsec.negocios.ControladoraDocente;
import adsec.entidades.Permiso;
import adsec.entidades.Estado;
import adsec.negocios.UtilidadesCapaNegocios;
import org.jdesktop.application.Action;


public class PanelDocentes extends javax.swing.JPanel implements ListSelectionListener {

    private AdministradorSeguridad adminSeguridad;
    private ControladoraDocente controladoraDocente;
    private LinkedList<Comite> comites;
    private Permiso permisoDocente;
    private Estado estado;
    public LiceoEscazuView vista;

    /** Creates new form PanelEstudiantes */
    public PanelDocentes() {
        initComponents();
        this.iniciarPanelDocentes();
    }

    public void iniciarPanelDocentes(){
        this.adminSeguridad = AdministradorSeguridad.getInstancia();
        this.controladoraDocente = new ControladoraDocente();
        this.comites = new LinkedList<Comite>();
        this.permisoDocente = this.adminSeguridad.getPermiso(UtilidadesCapaNegocios.moduloDocente);
        this.estado = new Estado();
        this.setHabilitarCampos(false);
        this.habilitarBotonesIME(this.permisoDocente.isInsertar(), false, false);
        //this.habilitarBotonesIME(true, false, false);
        this.cargarGridDocentes();
        this.habilitarAceptarCancelar(false);
    }//fin de iniciarPanelDocentes

    protected MaskFormatter createFormatter(String s) {
        MaskFormatter formatter = null;
        try {
            formatter = new MaskFormatter(s);
        } catch (java.text.ParseException exc) {
            System.err.println("formatter is bad: " + exc.getMessage());
            System.exit(-1);
        }
        return formatter;
    }

    /**
     ** Recibe un boolean para habilitar todos los campos de la pantalla
     ** o ya sea deshabilitarlos
     **/
    private void setHabilitarCampos(boolean habilitar){
        this.txtNombre.setEnabled(habilitar);
        this.txtApellidos.setEnabled(habilitar);
        this.txtCedula.setEditable(habilitar);
        this.spinDia.setEnabled(habilitar);
        this.spinMes.setEnabled(habilitar);
        this.spinAño.setEnabled(habilitar);
        this.cbSexo.setEnabled(habilitar);
        this.txtNacionalidad.setEditable(habilitar);
        this.txtTelefono1.setEditable(habilitar);
        this.txtTelefono2.setEditable(habilitar);
        this.txtProvincia.setEditable(habilitar);
        this.txtCanton.setEditable(habilitar);
        this.txtDistrito.setEditable(habilitar);
        this.txtOtrasSeñas.setEditable(habilitar);
        this.txtPuesto.setEnabled(habilitar);
        this.txtCategoria.setEnabled(habilitar);
        this.spinLeccionesAsignadas.setEnabled(habilitar);
        this.gridComite.setEnabled(habilitar);
    }//fin de setHabilitarCampos

    /**
     ** Habilita o deshabilita los botones insertar, modificar y eliminar
     **/
    private void habilitarBotonesIME(boolean insertar, boolean modificar, boolean eliminar){
        this.btnInsertar.setEnabled(insertar);
        this.btnModificar.setEnabled(modificar);
        this.btnEliminar.setEnabled(eliminar);
    }

    /**
     ** Habilita o deshabilita los botones aceptar y cancelar
     **/
    private void habilitarAceptarCancelar(boolean habilitar){
        this.btnAceptar.setEnabled(habilitar);
        this.btnCancelar.setEnabled(habilitar);
    }

    /**
     ** Limpia todos los campos de la pantalla
     **/
    private void limpiarCampos(){
        this.txtNombre.setText("");
        this.txtApellidos.setText("");
        this.txtCedula.setText("0-0000-0000");
        this.spinDia.getModel().setValue(1);
        this.spinMes.getModel().setValue(1);
        this.spinAño.getModel().setValue(1950);
        this.cbSexo.setSelectedIndex(0);
        this.txtNacionalidad.setText("");
        this.txtTelefono1.setText("00-00-00-00");
        this.txtTelefono2.setText("00-00-00-00");
        this.txtProvincia.setText("");
        this.txtCanton.setText("");
        this.txtDistrito.setText("");
        this.txtOtrasSeñas.setText("");
        this.txtPuesto.setText("");
        this.txtCategoria.setText("");
        this.spinLeccionesAsignadas.getModel().setValue(0);
        this.limpiarGridComite();
    }//fin de limpiarCampos

    /**
     ** Obtiene todos los datos del docente y crea un objeto de tipo Docente
     ** el cual es retornado
     ** @return Un Docente
     */
    public Docente obtenerDatosDocente(){
        Docente docente = new Docente();
        docente.setCedula(this.txtCedula.getText());
        docente.setNombre(this.txtNombre.getText());
        docente.setApellidos(this.txtApellidos.getText());
        docente.setFechaNac(obtenerFecha());
        docente.setSexo(this.cbSexo.getSelectedItem().toString().substring(0, 1));
        docente.setTelefono1(this.txtTelefono1.getText());
        docente.setTelefono2(this.txtTelefono2.getText());
        docente.setNacionalidad(this.txtNacionalidad.getText());
        docente.setProvincia(this.txtProvincia.getText());
        docente.setCanton(this.txtCanton.getText());
        docente.setDistrito(this.txtDistrito.getText());
        docente.setOtrasSenias(this.txtOtrasSeñas.getText());
        docente.setPuesto(this.txtPuesto.getText());
        docente.setCategoria(this.txtCategoria.getText());
        docente.setLeccionesAsignadas(Integer.parseInt(this.spinLeccionesAsignadas.getModel().getValue().toString()));
        return docente;
    }//fin de obtenerDatosDocente

    private Date obtenerFecha(){
        int dia = Integer.parseInt(this.spinDia.getValue().toString());
        int mes = Integer.parseInt(this.spinMes.getValue().toString())-1;
        int anio = Integer.parseInt(this.spinAño.getValue().toString());
        Calendar calendario = Calendar.getInstance();
        calendario.clear();
        calendario.set(anio,mes,dia);
        Date fecha = new Date(calendario.getTimeInMillis());
        return fecha;
    }//fin de obtenerFecha

    private void insertarDocente(){

        Docente docente = this.obtenerDatosDocente();
        if(!UtilidadesCapaNegocios.existeLlave(Docente.nombreTabla, Docente.cedulaNC, docente.getCedula())){
            int resultado = this.controladoraDocente.insertarDocente(docente);
            LinkedList<Comite> comitesDocente = this.obtenerListaComitesDocente();
            if(resultado == UtilidadesCapaNegocios.QUERY_OK && !comitesDocente.isEmpty()){
                resultado = this.controladoraDocente.insertarDocenteComite(docente.getCedula(), comitesDocente);
            }
            if(resultado == UtilidadesCapaNegocios.QUERY_OK){
                    this.gridDocentes.getSelectionModel().clearSelection();
                    JOptionPane.showMessageDialog(null, "El docente fue insertado con éxito");
                    this.volverConsultar();
                }//fin de if
            else{
                JOptionPane.showMessageDialog(null, UtilidadesCapaNegocios.getErrorOperacion(UtilidadesCapaNegocios.moduloDocente, UtilidadesCapaNegocios.opInsertar), "ERROR", JOptionPane.ERROR_MESSAGE);
            }//fin de else
        }else{
            JOptionPane.showMessageDialog(null, "El docente con cédula " + docente.getCedula() + " ya existe", "ERROR", JOptionPane.ERROR_MESSAGE);
        }
        
    }//fin de insertarDocente

    private LinkedList<Comite> obtenerListaComitesDocente(){
        LinkedList<Comite> comitesDocente = new LinkedList<Comite>();
        Iterator<Comite> iterador = this.comites.iterator();
        while(iterador.hasNext()){
            Comite comite = iterador.next();
            if(comite.isEstado()){
                comitesDocente.add(comite);
            }
        }
        return comitesDocente;
    }

    private void modificarDocente(){
        Docente docente = this.obtenerDatosDocente();
        int resultado = this.controladoraDocente.modificarDocente(docente);
        LinkedList<Comite> comitesDocente = this.obtenerListaComitesDocente();
        if(resultado == UtilidadesCapaNegocios.QUERY_OK && !comitesDocente.isEmpty()){
            resultado = this.controladoraDocente.eliminarTodosComitesDelDocente(docente.getCedula());
            if(resultado == UtilidadesCapaNegocios.QUERY_OK){
                resultado = this.controladoraDocente.insertarDocenteComite(docente.getCedula(), comitesDocente);
            }
        }
        if(resultado == UtilidadesCapaNegocios.QUERY_OK){
            this.gridDocentes.getSelectionModel().clearSelection();
            JOptionPane.showMessageDialog(null, "El docente fue modificado con éxito");
            this.volverConsultar();
        }//fin de if
        else{
            JOptionPane.showMessageDialog(null, UtilidadesCapaNegocios.getErrorOperacion(UtilidadesCapaNegocios.moduloDocente, UtilidadesCapaNegocios.opModificar), "ERROR", JOptionPane.ERROR_MESSAGE);
        }//fin de else

    }//fin de modificarDocente

    private void eliminarDocente(){
        String cedula = this.txtCedula.getText();
        int resultado = this.controladoraDocente.eliminarDocente(cedula);
        if(resultado == UtilidadesCapaNegocios.QUERY_OK){
            this.gridDocentes.getSelectionModel().clearSelection();
            JOptionPane.showMessageDialog(null, "El docente fue eliminado con éxito");
            this.volverConsultar();
            this.limpiarCampos();
        }//fin de if
        else{
            JOptionPane.showMessageDialog(null, UtilidadesCapaNegocios.getErrorOperacion(UtilidadesCapaNegocios.moduloDocente, UtilidadesCapaNegocios.opEliminar), "ERROR", JOptionPane.ERROR_MESSAGE);
        }//fin de else

    }//fin de eliminarDocente

    private void consultarDocente(String cedula){
        Docente docente = controladoraDocente.consultarDocente(cedula);
        if(docente!= null){
            this.llenarCamposDocente(docente);
        }else{
            String mensaje = UtilidadesCapaNegocios.getErrorOperacion(UtilidadesCapaNegocios.moduloDocente, UtilidadesCapaNegocios.opConsultar);
            JOptionPane.showMessageDialog(null, mensaje, "ERROR",JOptionPane.ERROR_MESSAGE);
        }
    }//fin de consultarDocente

    private void llenarCamposDocente(Docente docente){
        this.txtNombre.setText(docente.getNombre());
        this.txtApellidos.setText(docente.getApellidos());
        this.txtCedula.setText(docente.getCedula());
        Date fecha = docente.getFechaNac();
        Calendar calendario = Calendar.getInstance();
        calendario.clear();
        calendario.setTime(fecha);
        this.spinDia.getModel().setValue(calendario.get(Calendar.DAY_OF_MONTH));
        this.spinMes.getModel().setValue(calendario.get(Calendar.MONTH) + 1);
        this.spinAño.getModel().setValue(calendario.get(Calendar.YEAR));
        this.cbSexo.setSelectedItem(UtilidadesCapaNegocios.obtenerSexo(docente.getSexo()));
        this.txtNacionalidad.setText(docente.getNacionalidad());
        this.txtTelefono1.setText(docente.getTelefono1());
        this.txtTelefono2.setText(docente.getTelefono2());
        this.txtProvincia.setText(docente.getProvincia());
        this.txtCanton.setText(docente.getCanton());
        this.txtDistrito.setText(docente.getDistrito());
        this.txtOtrasSeñas.setText(docente.getOtrasSenias());
        this.txtPuesto.setText(docente.getPuesto());
        this.txtCategoria.setText(docente.getCategoria());
        this.spinLeccionesAsignadas.getModel().setValue(docente.getLeccionesAsignadas());
        this.habilitarBotonesIME(permisoDocente.isInsertar(), permisoDocente.isModificar(), permisoDocente.isEliminar());
        //this.habilitarBotonesIME(true, true, true);
        this.cargarGridComiteConsultar(docente.getCedula());
    }

    private void volverConsultar(){
        this.estado.setEstadoActual(Estado.CONSULTAR);
        //this.habilitarBotonesIME(true, false, false);
        this.habilitarBotonesIME(permisoDocente.isInsertar(), false, false);
        this.setHabilitarCampos(false);
        this.habilitarAceptarCancelar(false);
        this.cargarGridDocentes();
    }//fin de volverConsultar

    private void cargarGridDocentes(){
        this.limpiarGridDocentes();
        if(this.permisoDocente.isConsultar()){
            LinkedList<Docente> docentes = controladoraDocente.consultarDocentes();
            Iterator<Docente> iterador = docentes.iterator();
            while(iterador.hasNext()){
                Object arregloDatos[] = new Object[5];
                Docente docente = iterador.next();
                arregloDatos[0] = docente.getCedula();
                arregloDatos[1] = docente.getNombre();
                arregloDatos[2] = docente.getApellidos();
                arregloDatos[3] = docente.getTelefono1();
                arregloDatos[4] = docente.getPuesto();
                ((DefaultTableModel)this.gridDocentes.getModel()).addRow(arregloDatos);
            }//fin de while
        }//fin de if
    }//fin de cargarGridDocentes

    private void cargarGridComiteInsertar(){
        this.limpiarGridComite();
        this.comites = this.controladoraDocente.consultarComites();
        Iterator<Comite> iterador = this.comites.iterator();
        while(iterador.hasNext()){
            Object arregloDatos[] = new Object[2];
            Comite comite = iterador.next();
            arregloDatos[0] = comite.getNombre();
            arregloDatos[1] = comite.isEstado();
            ((DefaultTableModel)this.gridComite.getModel()).addRow(arregloDatos);
        }
    }

    private void cargarGridComiteConsultar(String cedulaDocente){
        this.limpiarGridComite();
        this.comites = this.controladoraDocente.consultarComitesDocente(cedulaDocente);
        Iterator<Comite> iterador = this.comites.iterator();
        while(iterador.hasNext()){
            Object arregloDatos[] = new Object[2];
            Comite comite = iterador.next();
            arregloDatos[0] = comite.getNombre();
            arregloDatos[1] = comite.isEstado();
            ((DefaultTableModel)this.gridComite.getModel()).addRow(arregloDatos);
        }
    }

    private void limpiarGridDocentes(){
        ((DefaultTableModel)this.gridDocentes.getModel()).setRowCount(0);
        this.comites.clear();
    }//fin de limpiarGridDocentes

    private void limpiarGridComite(){
        ((DefaultTableModel)this.gridComite.getModel()).setRowCount(0);
    }//fin de limpiarGridDocentes

    public void valueChanged(ListSelectionEvent evento){
        DefaultListSelectionModel fuente = (DefaultListSelectionModel)evento.getSource();
        if(fuente == (DefaultListSelectionModel)this.gridDocentes.getSelectionModel()){
            int filas = ((DefaultTableModel)this.gridDocentes.getModel()).getRowCount();
            if(filas > 0 && estado.getEstadoActual() == Estado.CONSULTAR && evento.getValueIsAdjusting()){
                int fila = this.gridDocentes.getSelectedRow();
                if(fila >= 0){
                    String cedula = this.gridDocentes.getModel().getValueAt(fila, 0).toString();
                    this.consultarDocente(cedula);
                }
            }//fin de if
        }//fin de if
        else{
            if(fuente == (DefaultListSelectionModel)this.gridComite.getSelectionModel()){
                int fila = this.gridComite.getSelectedRow();
                if(fila >=0 && evento.getValueIsAdjusting()){
                    this.comites.get(fila).setEstado(this.gridComite.getModel().getValueAt(fila, 1).equals(true));
                }
            }
        }//fin de else
        
    }//fin de método valueChanged

    private boolean validarDatos(){
        boolean resultado = true;
        resultado &= !txtCedula.getText().replaceAll("-", "").replaceAll("0", "").isEmpty();
        int dia = Integer.parseInt(this.spinDia.getValue().toString());
        int mes = Integer.parseInt(this.spinMes.getValue().toString())-1;
        int anio = Integer.parseInt(this.spinAño.getValue().toString());
        Calendar calendario = Calendar.getInstance();
        calendario.clear();
        calendario.set(anio,mes,dia);
        resultado &= (calendario.get(Calendar.DAY_OF_MONTH) == dia) && (calendario.get(Calendar.MONTH) == mes) && (calendario.get(Calendar.YEAR) == anio);
        if(!resultado){
            JOptionPane.showMessageDialog(null, "1.El número de cédula debe ser válido.\n2.Debe digitar una fecha válida", "ERROR",JOptionPane.WARNING_MESSAGE);
        }
        return resultado;
    }//fin de validarDatos

    private boolean verificarDatosObligatorios(){
        boolean resultado = true;
        resultado &= !txtNombre.getText().trim().isEmpty();
        resultado &= !txtApellidos.getText().trim().isEmpty();
        resultado &= !txtCedula.getText().replaceAll("-", "").trim().isEmpty();
        if(!resultado){
            JOptionPane.showMessageDialog(null, "Los campos nombre, apellidos y número de cédula son obligatorios", "ERROR",JOptionPane.WARNING_MESSAGE);
        }
        return resultado;
    }//fin de verificarDatosObligatorios

    @Action
    public void insertandoDocente() {
        this.estado.setEstadoActual(Estado.INSERTAR);
        this.limpiarCampos();
        this.setHabilitarCampos(true);
        this.habilitarBotonesIME(false, false, false);
        this.habilitarAceptarCancelar(true);
        this.cargarGridComiteInsertar();
    }//fin de insertandoDocente

    @Action
    public void modificandoDocente() {
        this.estado.setEstadoActual(Estado.MODIFICAR);
        this.setHabilitarCampos(true);
        this.habilitarBotonesIME(false, false, false);
        this.habilitarAceptarCancelar(true);
        this.txtCedula.setEditable(false);
    }//fin de insertandoDocente

    @Action
    public void eliminandoDocente() {
        Animador.animar();
        if(this.mostrarMensajeConfirmacion(UtilidadesCapaNegocios.opEliminar, "ELIMINAR")){
            this.eliminarDocente();
        }
        Animador.detenerAnimacion();
    }//fin de insertandoDocente

    /**
     ** Muestra un mensaje de confirmación para que el usuario decida si realmente
     ** quiere llevar a cabo una operación
     ** @param operacion Código de operación realizada, tomada de UtilidadesCapaNegocios
     ** @param titulo Título a mostrar en el cuadro de confirmación
     ** @return Confirmación: true si el usuario acepta, false en otro caso.
     **/
    private boolean mostrarMensajeConfirmacion(int operacion,String titulo){
        boolean resultado = true;
        String mensaje = UtilidadesCapaNegocios.getMensajeConfirmacion(UtilidadesCapaNegocios.moduloDocente, operacion);
        int respuesta = JOptionPane.showConfirmDialog(null, mensaje,titulo ,JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
        resultado = respuesta == JOptionPane.OK_OPTION;
        return resultado;
    }//fin de mostrarMensajeConfirmacion

    @Action
    public void accionAceptar() {
        Animador.animar();
        switch(estado.getEstadoActual()){
            case Estado.INSERTAR:
                if(mostrarMensajeConfirmacion(UtilidadesCapaNegocios.opInsertar, "INSERTAR")){
                    if(verificarDatosObligatorios() && validarDatos()){
                        this.insertarDocente();
                    }
                }
            break;
            case Estado.MODIFICAR:
                if(mostrarMensajeConfirmacion(UtilidadesCapaNegocios.opModificar, "MODIFICAR")){
                    if(verificarDatosObligatorios() && validarDatos()){
                        this.modificarDocente();
                    }
                }
            break;
        }//fin de switch
        Animador.detenerAnimacion();
    }//fin de accionAceptar

    @Action
    public void accionCancelar() {
        this.limpiarCampos();
        this.volverConsultar();
    }//fin de accionCancelar

    @Action
    public void buscarDocente() {
        String cedulaBusqueda = txtCedulaBusqueda.getText();
        Docente docente = controladoraDocente.consultarDocente(cedulaBusqueda);
        if(docente != null){
            this.llenarCamposDocente(docente);
            String mensaje = "Se han cargado con éxito los datos del docente buscado";
            JOptionPane.showMessageDialog(null, mensaje, "Búsqueda exitosa",JOptionPane.INFORMATION_MESSAGE);
        }else{
            String mensaje = "El docente no se encuentra en el sistema";
            JOptionPane.showMessageDialog(null, mensaje, "ERROR",JOptionPane.ERROR_MESSAGE);
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lbNombre = new javax.swing.JLabel();
        lbApellidos = new javax.swing.JLabel();
        txtNombre = new javax.swing.JTextField();
        txtApellidos = new javax.swing.JTextField();
        lbCedula = new javax.swing.JLabel();
        lbFechaNacimiento = new javax.swing.JLabel();
        lbSeparador1 = new javax.swing.JLabel();
        lbSeparador2 = new javax.swing.JLabel();
        lbSexo = new javax.swing.JLabel();
        cbSexo = new javax.swing.JComboBox();
        lbTelefono1 = new javax.swing.JLabel();
        lbTelefono2 = new javax.swing.JLabel();
        lbNacionalidad = new javax.swing.JLabel();
        txtNacionalidad = new javax.swing.JTextField();
        lbProvincia = new javax.swing.JLabel();
        txtProvincia = new javax.swing.JTextField();
        lbCanton = new javax.swing.JLabel();
        txtCanton = new javax.swing.JTextField();
        lbDistrito = new javax.swing.JLabel();
        txtDistrito = new javax.swing.JTextField();
        lbOtrasSenas = new javax.swing.JLabel();
        btnInsertar = new javax.swing.JButton();
        btnModificar = new javax.swing.JButton();
        btnEliminar = new javax.swing.JButton();
        scrollTablaProfesor = new javax.swing.JScrollPane();
        gridDocentes = new javax.swing.JTable();
        btnAceptar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        txtCedula = new javax.swing.JFormattedTextField(createFormatter("#-####-####"));
        txtTelefono1 = new javax.swing.JFormattedTextField(createFormatter("##-##-##-##"));
        txtTelefono2 = new javax.swing.JFormattedTextField(createFormatter("##-##-##-##"));
        lbPuesto = new javax.swing.JLabel();
        txtPuesto = new javax.swing.JTextField();
        lbCategoria = new javax.swing.JLabel();
        txtCategoria = new javax.swing.JTextField();
        lbLeccionesAsig = new javax.swing.JLabel();
        spinLeccionesAsignadas = new javax.swing.JSpinner(new SpinnerNumberModel(0,0,null,1));
        lbComite = new javax.swing.JLabel();
        scrollOtrasSeñas = new javax.swing.JScrollPane();
        txtOtrasSeñas = new javax.swing.JTextArea();
        scrollTablaComite = new javax.swing.JScrollPane();
        gridComite = new javax.swing.JTable();
        spinDia = new javax.swing.JSpinner(new SpinnerNumberModel(1,1,31,1));
        spinMes = new javax.swing.JSpinner(new SpinnerNumberModel(1,1,12,1));
        spinAño = new javax.swing.JSpinner(new SpinnerNumberModel(1950,1900,2999,1));
        txtCedulaBusqueda = new javax.swing.JFormattedTextField(createFormatter("#-####-####"));
        btnBusqueda = new javax.swing.JButton();
        obli1 = new javax.swing.JLabel();
        obli2 = new javax.swing.JLabel();
        obli3 = new javax.swing.JLabel();

        setMaximumSize(new java.awt.Dimension(660, 625));
        setMinimumSize(new java.awt.Dimension(660, 625));
        setName("Form"); // NOI18N
        setPreferredSize(new java.awt.Dimension(660, 625));

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(adsec.presentacion.LiceoEscazuApp.class).getContext().getResourceMap(PanelDocentes.class);
        lbNombre.setText(resourceMap.getString("lbNombre.text")); // NOI18N
        lbNombre.setName("lbNombre"); // NOI18N

        lbApellidos.setText(resourceMap.getString("lbApellidos.text")); // NOI18N
        lbApellidos.setName("lbApellidos"); // NOI18N

        txtNombre.setText(resourceMap.getString("txtNombre.text")); // NOI18N
        txtNombre.setAutoscrolls(false);
        txtNombre.setName("txtNombre"); // NOI18N

        txtApellidos.setText(resourceMap.getString("txtApellidos.text")); // NOI18N
        txtApellidos.setAutoscrolls(false);
        txtApellidos.setName("txtApellidos"); // NOI18N

        lbCedula.setText(resourceMap.getString("lbCedula.text")); // NOI18N
        lbCedula.setName("lbCedula"); // NOI18N

        lbFechaNacimiento.setText(resourceMap.getString("lbFechaNacimiento.text")); // NOI18N
        lbFechaNacimiento.setName("lbFechaNacimiento"); // NOI18N

        lbSeparador1.setText(resourceMap.getString("lbSeparador1.text")); // NOI18N
        lbSeparador1.setName("lbSeparador1"); // NOI18N

        lbSeparador2.setText(resourceMap.getString("lbSeparador2.text")); // NOI18N
        lbSeparador2.setName("lbSeparador2"); // NOI18N

        lbSexo.setText(resourceMap.getString("lbSexo.text")); // NOI18N
        lbSexo.setName("lbSexo"); // NOI18N

        cbSexo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Femenino", "Masculino" }));
        cbSexo.setName("cbSexo"); // NOI18N

        lbTelefono1.setText(resourceMap.getString("lbTelefono1.text")); // NOI18N
        lbTelefono1.setName("lbTelefono1"); // NOI18N

        lbTelefono2.setText(resourceMap.getString("lbTelefono2.text")); // NOI18N
        lbTelefono2.setName("lbTelefono2"); // NOI18N

        lbNacionalidad.setText(resourceMap.getString("lbNacionalidad.text")); // NOI18N
        lbNacionalidad.setName("lbNacionalidad"); // NOI18N

        txtNacionalidad.setText(resourceMap.getString("txtNacionalidad.text")); // NOI18N
        txtNacionalidad.setAutoscrolls(false);
        txtNacionalidad.setName("txtNacionalidad"); // NOI18N

        lbProvincia.setText(resourceMap.getString("lbProvincia.text")); // NOI18N
        lbProvincia.setName("lbProvincia"); // NOI18N

        txtProvincia.setText(resourceMap.getString("txtProvincia.text")); // NOI18N
        txtProvincia.setAutoscrolls(false);
        txtProvincia.setName("txtProvincia"); // NOI18N

        lbCanton.setText(resourceMap.getString("lbCanton.text")); // NOI18N
        lbCanton.setName("lbCanton"); // NOI18N

        txtCanton.setText(resourceMap.getString("txtCanton.text")); // NOI18N
        txtCanton.setAutoscrolls(false);
        txtCanton.setName("txtCanton"); // NOI18N

        lbDistrito.setText(resourceMap.getString("lbDistrito.text")); // NOI18N
        lbDistrito.setName("lbDistrito"); // NOI18N

        txtDistrito.setText(resourceMap.getString("txtDistrito.text")); // NOI18N
        txtDistrito.setAutoscrolls(false);
        txtDistrito.setName("txtDistrito"); // NOI18N

        lbOtrasSenas.setText(resourceMap.getString("lbOtrasSenas.text")); // NOI18N
        lbOtrasSenas.setName("lbOtrasSenas"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(adsec.presentacion.LiceoEscazuApp.class).getContext().getActionMap(PanelDocentes.class, this);
        btnInsertar.setAction(actionMap.get("insertandoDocente")); // NOI18N
        btnInsertar.setText(resourceMap.getString("btnInsertar.text")); // NOI18N
        btnInsertar.setName("btnInsertar"); // NOI18N

        btnModificar.setAction(actionMap.get("modificandoDocente")); // NOI18N
        btnModificar.setText(resourceMap.getString("btnModificar.text")); // NOI18N
        btnModificar.setName("btnModificar"); // NOI18N

        btnEliminar.setAction(actionMap.get("eliminandoDocente")); // NOI18N
        btnEliminar.setText(resourceMap.getString("btnEliminar.text")); // NOI18N
        btnEliminar.setName("btnEliminar"); // NOI18N

        scrollTablaProfesor.setName("scrollTablaProfesor"); // NOI18N

        gridDocentes.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Cédula", "Nombre", "Apellidos", "Telefono 1", "Puesto"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        gridDocentes.setName("gridDocentes"); // NOI18N
        scrollTablaProfesor.setViewportView(gridDocentes);
        gridDocentes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        gridDocentes.getSelectionModel().addListSelectionListener(this);

        btnAceptar.setAction(actionMap.get("accionAceptar")); // NOI18N
        btnAceptar.setText(resourceMap.getString("btnAceptar.text")); // NOI18N
        btnAceptar.setName("btnAceptar"); // NOI18N

        btnCancelar.setAction(actionMap.get("accionCancelar")); // NOI18N
        btnCancelar.setText(resourceMap.getString("btnCancelar.text")); // NOI18N
        btnCancelar.setName("btnCancelar"); // NOI18N

        txtCedula.setText(resourceMap.getString("txtCedula.text")); // NOI18N
        txtCedula.setName("txtCedula"); // NOI18N

        txtTelefono1.setText(resourceMap.getString("txtTelefono1.text")); // NOI18N
        txtTelefono1.setName("txtTelefono1"); // NOI18N

        txtTelefono2.setText(resourceMap.getString("txtTelefono2.text")); // NOI18N
        txtTelefono2.setName("txtTelefono2"); // NOI18N

        lbPuesto.setText(resourceMap.getString("lbPuesto.text")); // NOI18N
        lbPuesto.setName("lbPuesto"); // NOI18N

        txtPuesto.setText(resourceMap.getString("txtPuesto.text")); // NOI18N
        txtPuesto.setName("txtPuesto"); // NOI18N

        lbCategoria.setText(resourceMap.getString("lbCategoria.text")); // NOI18N
        lbCategoria.setName("lbCategoria"); // NOI18N

        txtCategoria.setText(resourceMap.getString("txtCategoria.text")); // NOI18N
        txtCategoria.setName("txtCategoria"); // NOI18N

        lbLeccionesAsig.setText(resourceMap.getString("lbLeccionesAsig.text")); // NOI18N
        lbLeccionesAsig.setName("lbLeccionesAsig"); // NOI18N

        spinLeccionesAsignadas.setName("spinLeccionesAsignadas"); // NOI18N

        lbComite.setText(resourceMap.getString("lbComite.text")); // NOI18N
        lbComite.setName("lbComite"); // NOI18N

        scrollOtrasSeñas.setName("scrollOtrasSeñas"); // NOI18N

        txtOtrasSeñas.setColumns(20);
        txtOtrasSeñas.setRows(5);
        txtOtrasSeñas.setName("txtOtrasSeñas"); // NOI18N
        scrollOtrasSeñas.setViewportView(txtOtrasSeñas);

        scrollTablaComite.setName("scrollTablaComite"); // NOI18N

        gridComite.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Comité", "Pertenece"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        gridComite.setName("gridComite"); // NOI18N
        scrollTablaComite.setViewportView(gridComite);
        gridComite.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("gridComite.columnModel.title0")); // NOI18N
        gridComite.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("gridComite.columnModel.title1")); // NOI18N
        gridComite.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        gridComite.getSelectionModel().addListSelectionListener(this);

        spinDia.setName("spinDia"); // NOI18N

        spinMes.setName("spinMes"); // NOI18N

        spinAño.setName("spinAño"); // NOI18N

        txtCedulaBusqueda.setText(resourceMap.getString("txtCedulaBusqueda.text")); // NOI18N
        txtCedulaBusqueda.setName("txtCedulaBusqueda"); // NOI18N

        btnBusqueda.setAction(actionMap.get("buscarDocente")); // NOI18N
        btnBusqueda.setIcon(resourceMap.getIcon("btnBusqueda.icon")); // NOI18N
        btnBusqueda.setName("btnBusqueda"); // NOI18N

        obli1.setForeground(resourceMap.getColor("obli1.foreground")); // NOI18N
        obli1.setText(resourceMap.getString("obli1.text")); // NOI18N
        obli1.setName("obli1"); // NOI18N

        obli2.setForeground(resourceMap.getColor("obli2.foreground")); // NOI18N
        obli2.setText(resourceMap.getString("obli2.text")); // NOI18N
        obli2.setName("obli2"); // NOI18N

        obli3.setForeground(resourceMap.getColor("obli3.foreground")); // NOI18N
        obli3.setText(resourceMap.getString("obli3.text")); // NOI18N
        obli3.setName("obli3"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(scrollTablaProfesor, javax.swing.GroupLayout.DEFAULT_SIZE, 636, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lbComite, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbLeccionesAsig, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbCategoria, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbPuesto, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbOtrasSenas, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbProvincia, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbTelefono1, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbNacionalidad, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbSexo, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbFechaNacimiento, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbCedula, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbApellidos, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbNombre, javax.swing.GroupLayout.Alignment.TRAILING))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(scrollTablaComite, javax.swing.GroupLayout.DEFAULT_SIZE, 502, Short.MAX_VALUE)
                            .addComponent(scrollOtrasSeñas, javax.swing.GroupLayout.DEFAULT_SIZE, 502, Short.MAX_VALUE)
                            .addComponent(txtNacionalidad, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(txtNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(obli1))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(txtApellidos, javax.swing.GroupLayout.PREFERRED_SIZE, 261, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(obli2))
                            .addComponent(cbSexo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(txtCedula, javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                        .addComponent(spinDia, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(lbSeparador1)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(spinMes, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(lbSeparador2)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(obli3)
                                    .addComponent(spinAño, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(txtProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(lbCanton)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtCanton, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(lbDistrito)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtDistrito, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(txtTelefono1, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(lbTelefono2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtTelefono2, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(txtCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtPuesto, javax.swing.GroupLayout.PREFERRED_SIZE, 223, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(spinLeccionesAsignadas, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(btnInsertar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnModificar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnEliminar))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(txtCedulaBusqueda, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnBusqueda, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 323, Short.MAX_VALUE)
                        .addComponent(btnAceptar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnCancelar)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnInsertar)
                    .addComponent(btnModificar)
                    .addComponent(btnEliminar))
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbNombre)
                    .addComponent(obli1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtApellidos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbApellidos)
                    .addComponent(obli2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbCedula)
                    .addComponent(txtCedula, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(obli3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbFechaNacimiento)
                    .addComponent(spinDia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbSeparador1)
                    .addComponent(spinMes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbSeparador2)
                    .addComponent(spinAño, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cbSexo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbSexo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtNacionalidad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbNacionalidad))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtTelefono1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbTelefono1)
                    .addComponent(lbTelefono2)
                    .addComponent(txtTelefono2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtCanton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtDistrito, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbCanton)
                    .addComponent(lbDistrito)
                    .addComponent(lbProvincia))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                    .addComponent(scrollOtrasSeñas, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbOtrasSenas))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtPuesto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbPuesto))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbCategoria)
                    .addComponent(txtCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbLeccionesAsig)
                    .addComponent(spinLeccionesAsignadas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lbComite)
                    .addComponent(scrollTablaComite, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(scrollTablaProfesor, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btnAceptar)
                        .addComponent(btnCancelar)
                        .addComponent(txtCedulaBusqueda, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(btnBusqueda, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents


    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAceptar;
    private javax.swing.JButton btnBusqueda;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnInsertar;
    private javax.swing.JButton btnModificar;
    private javax.swing.JComboBox cbSexo;
    private javax.swing.JTable gridComite;
    private javax.swing.JTable gridDocentes;
    private javax.swing.JLabel lbApellidos;
    private javax.swing.JLabel lbCanton;
    private javax.swing.JLabel lbCategoria;
    private javax.swing.JLabel lbCedula;
    private javax.swing.JLabel lbComite;
    private javax.swing.JLabel lbDistrito;
    private javax.swing.JLabel lbFechaNacimiento;
    private javax.swing.JLabel lbLeccionesAsig;
    private javax.swing.JLabel lbNacionalidad;
    private javax.swing.JLabel lbNombre;
    private javax.swing.JLabel lbOtrasSenas;
    private javax.swing.JLabel lbProvincia;
    private javax.swing.JLabel lbPuesto;
    private javax.swing.JLabel lbSeparador1;
    private javax.swing.JLabel lbSeparador2;
    private javax.swing.JLabel lbSexo;
    private javax.swing.JLabel lbTelefono1;
    private javax.swing.JLabel lbTelefono2;
    private javax.swing.JLabel obli1;
    private javax.swing.JLabel obli2;
    private javax.swing.JLabel obli3;
    private javax.swing.JScrollPane scrollOtrasSeñas;
    private javax.swing.JScrollPane scrollTablaComite;
    private javax.swing.JScrollPane scrollTablaProfesor;
    private javax.swing.JSpinner spinAño;
    private javax.swing.JSpinner spinDia;
    private javax.swing.JSpinner spinLeccionesAsignadas;
    private javax.swing.JSpinner spinMes;
    private javax.swing.JTextField txtApellidos;
    private javax.swing.JTextField txtCanton;
    private javax.swing.JTextField txtCategoria;
    private javax.swing.JFormattedTextField txtCedula;
    private javax.swing.JFormattedTextField txtCedulaBusqueda;
    private javax.swing.JTextField txtDistrito;
    private javax.swing.JTextField txtNacionalidad;
    private javax.swing.JTextField txtNombre;
    private javax.swing.JTextArea txtOtrasSeñas;
    private javax.swing.JTextField txtProvincia;
    private javax.swing.JTextField txtPuesto;
    private javax.swing.JFormattedTextField txtTelefono1;
    private javax.swing.JFormattedTextField txtTelefono2;
    // End of variables declaration//GEN-END:variables
    // </editor-fold>
}
